﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Admin_panel_ThongKe_frmThongKe_BieuMau_14 : System.Web.UI.Page
{
    int _nam = 0;
    BieumauDataContext _db = new BieumauDataContext();
    string _bieuMauDangTruyVan = "";

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (Request.QueryString["nam"] == null)
               Response.Redirect("Dulieuthongke.aspx");
            lblNam.Text = (Convert.ToInt32(Request.QueryString["nam"]) - 1) + "";
            _nam = Convert.ToInt32(Request.QueryString["nam"]);
            _bieuMauDangTruyVan = "BM_14";

            TongHopCoBan(8, 2);

            TongHopTheoDong(9, 2, 2, 4);
            TongHopTheoDong(10, 2, 6, 1);
            TongHopTheoDong(11, 2, 7, 2);
           

            duyetAllTextBox(11, 2, "khoa");

            //
            tblCauHinhThongKe tk = _db.tblCauHinhThongKes.Single(p => p.ID == "001");
            lblDonViBaoCao.Text = tk.DonViGui;
            lblDonViNhan.Text = tk.DonViNhan;
            txtGiamDoc.Text = tk.GiamDoc;
            txtNguoiLapBieu.Text = tk.NguoiLapBieu;
            txtDiaDiemKy.Text = tk.NoiGui;
            txtNgayKy.Text = DateTime.Now.Day.ToString();
            txtThangKy.Text = DateTime.Now.Month.ToString();
            txtNamKy.Text = DateTime.Now.Year.ToString();
            //  <asp:Label ID="lblDonViNhan" runat="server" Text="lblDonViBaoCao"></asp:Label>
            //

        }
        catch (Exception ex)
        {
           Response.Redirect("Dulieuthongke.aspx");
        }

    }

    private void duyetAllTextBox(int _soDong, int _soCot, string lenh)
    {
        txtNgayKy.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);
        txtThangKy.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);
        txtNamKy.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);
        if (lenh.Equals("khoa")) // neu lenh là khóa thì khóa
        {
            // đầu tiên khóa các Control phụ
          
            txtNguoiLapBieu.ReadOnly = true;
            txtGiamDoc.ReadOnly = true;
            txtDiaDiemKy.ReadOnly = true;
          
            txtNguoiLapBieu.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);
            txtGiamDoc.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);
            txtDiaDiemKy.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);

            txtChiaTheoNganhKinhTe.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);
            txtChiaTheoNganhKinhTe.ReadOnly = true;

        }

        if (lenh.Equals("backcolor")) // neu la lenh back thi set back cho nó
        {
            // đầu tiên set back các Control phụ
          
            txtNguoiLapBieu.BackColor = System.Drawing.Color.FromArgb(255, 255, 204);
            txtGiamDoc.BackColor = System.Drawing.Color.FromArgb(255, 255, 204);
            txtDiaDiemKy.BackColor = System.Drawing.Color.FromArgb(255, 255, 204);
        }

        // duyet tat các textbox trong bảng
        TextBox tx = null;
        string _tenControl = "", _tenControlTheoDong = "";
        for (int i = 1; i <= _soDong; i++) // vòng lap các dòng
        {
            _tenControlTheoDong = "txt" + i.ToString("D2") + "_"; // lúc này tên control có dạng txt01_
            for (int j = 1; j <= _soCot; j++) // vong lap các cột
            {
                _tenControl = "";// reset lai ten control
                _tenControl = _tenControlTheoDong + j;  // lúc này tên control có dạng txt01_1 
                tx = null; // reset lai bien giữ textbox
                tx = form.FindControl(_tenControl) as TextBox; // tìm textbox với tên đã lấy được
                if (lenh.Equals("khoa"))
                {
                    tx.ReadOnly = true;
                    tx.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);
                }
                if (lenh.Equals("backcolor"))
                    tx.BackColor = System.Drawing.Color.FromArgb(255, 255, 204);

            }
        } // het for

    }


    // thuật toán tổng hợp dữ liệu
    private void TongHopCoBan(int _soDong, int _soCot)
    {
        var _duLieuThongKe = from dulieu in _db.tblBieuMaus
                             where dulieu.TenBieuMau == _bieuMauDangTruyVan && dulieu.NamBaoCao == _nam
                             select dulieu;

        TextBox tx = null;
        string _tenControl = "", _tenControlTheoDong = "";
        int _ketqua = 0, _solayduoc = 0; ;
        string[] _arrDuLieuNguon;
        string[] _arrDuLieuTungDong;

        for (int i = 1; i <= _soDong; i++) // vòng lap các dòng
        {

            _tenControlTheoDong = "txt" + i.ToString("D2") + "_"; // lúc này tên control có dạng txt01_

            for (int j = 1; j <= _soCot; j++) // vong lap các cột
            {
                _tenControl = "";// reset lai ten control
                _tenControl = _tenControlTheoDong + j;  // lúc này tên control có dạng txt01_1 
                tx = null; // reset lai bien giữ textbox
                tx = form.FindControl(_tenControl) as TextBox; // tìm textbox với tên đã lấy được
                _ketqua = 0;
                foreach (tblBieuMau bmtmp in _duLieuThongKe)
                {
                    _arrDuLieuNguon = bmtmp.DuLieu.Split(',');
                    _arrDuLieuTungDong = _arrDuLieuNguon[i + 2].Split('-');
                    if (_arrDuLieuTungDong[j - 1].Equals(""))
                        _solayduoc = 0;
                    else
                        _solayduoc = Convert.ToInt32(_arrDuLieuTungDong[j - 1]);
                    _ketqua += _solayduoc;
                }

                tx.Text = _ketqua.ToString();
            }
        }
    }

    // thuật toán tổng hợp theo dòng 
    void TongHopTheoDong(int _thuTuDong, int _soCot, int _thuTuDongDau, int _soDongCanTongHop)
    {
        TextBox txtDong, txtCot;
        string _tenTxtDong = "txt", _tenTxtCot = "txt";
        int _demtmp = 0, _tong = 0;
        _tenTxtDong = "txt" + _thuTuDong.ToString("D2") + "_";

        for (int i = 1; i <= _soCot; i++)
        {
            txtDong = null; // reset lai bien giữ textbox
            txtDong = form.FindControl(_tenTxtDong + i.ToString()) as TextBox; // tìm textbox với tên đã lấy được
            _tong = 0;
            _demtmp = _thuTuDongDau;
            for (int j = 1; j <= _soDongCanTongHop; j++)
            {

                _tenTxtCot = "txt" + _demtmp.ToString("D2") + "_" + i.ToString();
                txtCot = null; // reset lại textbox
                txtCot = form.FindControl(_tenTxtCot) as TextBox;
                _tong += Convert.ToInt32(txtCot.Text);
                _demtmp++;
            }

            txtDong.Text = _tong.ToString();
        }
    }
}